草庐IT

dictionary - 分配给 nil 映射中的条目

全部标签

go - 无效的内存地址或 nil 指针与 mgo 取消引用

packagemainimport("encoding/json""fmt""io/ioutil""net/http""github.com/gorilla/handlers""github.com/gorilla/mux""gopkg.in/mgo.v2")typeDataIgstruct{Memberstring`json:"Member"`Timestampfloat64`json:"Timestamp"`Namestring`json:"Name"`Bidstring`json:"Bid"`Offerstring`json:"Offer"`Changestring`json:"

dictionary - 是否可以在创建新映射时初始化映射的值?

我正在处理从字节数组到二维列表的映射,其单独的列表元素是无符号32位整数。即map[[8]byte][][]uint32目前,我有检查二维列表是否已填充的逻辑,如果没有,我会添加两个空列表。从那里我可以开始实际填写这些列表。像这样:my_map:=make(map[[8]byte][][]uint32)/*Somelogictodefinexandi*/iflen(my_map[x])==0{/*Createtwofreshinner-lists*/}my_map[x][0]=append(my_map[x][0],uint32(i))但是,这并不是最优雅、也不是最有效的解决方案。我想

go - xorm 示例不工作 : "runtime error: invalid memory address or nil pointer dereference"

基于this示例我试图编写一个程序,该程序将从数据库返回一些数据。不幸的是,根据运行时控制台输出,(或多或少)相同的程序结构会在此处导致内存错误err:=orm.Find(&sensorDataEntry)。我在这里错过了什么?示例和我的程序都有使用make()创建的slice,并在Find()方法中使用引用。有问题的代码:packagemainimport("fmt""net/http""time""github.com/gorilla/mux"_"github.com/lib/pq"//"database/sql""github.com/go-xorm/xorm")varorm*x

go - 编写一个函数来从映射中获取一段字符串键,无论映射是什么值类型

我想编写一个函数来从映射中获取所有键作为字符串的一部分,键类型是字符串,值可以是任何其他类型。像这样,但可以有任何类型的map[string]...作为输入。funcmapLowCaseKeys(vmap[string]string)[]string{keys:=make([]string,len(v))i:=0forkey:=rangev{keys[i]=strings.ToLower(key)i++}returnkeys}实际上我想在Javascript中实现Object.keys()。我试过使用map[string]interface{}作为函数的参数类型,但它不能只将任何特定映

go - grpc:使用 oneof 会导致无效的内存地址或 nil 指针取消引用

我正在尝试使用Go将proto3结构发送到gRPC服务器。该结构有一个oneof类型,我似乎很好地填充了它。将消息发送到我的gRPC客户端时,我对无效内存地址或nil指针引用感到panic。我有原型(prototype)定义(完整文件位于https://github.com/MovingGauteng/geofancy-rs/blob/master/proto/geofancy.proto:#proto3messageDocument{stringcollection=1;stringid=2;oneofgeo{Pointpoint=4;LineStringline=5;Boundsb

dictionary - 为什么 map 值变得不存在?

我正在使用映射将随机字符串键存储到*os.File对象。用户将上传一个文件,我想在全局map中保存对该文件的引用,以便稍后删除它。我有一个http处理程序来处理上传,最后,我将一个随secret钥从操作系统uuidgen映射到类型为*os.File的“logBu​​ndleFile”。vardb=map[string]*os.File{}funcuploadHandler(whttp.ResponseWriter,r*http.Request){r.ParseMultipartForm(5完成后,您将被重定向到此sessionHandler。它将检查正文中的ID是否有效,即是否映射到*

dictionary - Golang 多个计时器与 map+channel+mutex

所以我正在使用map/channel/mutex实现多个计时器。为了取消计时器,我有一个存储取消信息的channel映射,下面是代码:vartimerCancelMap=make(map[string]chaninterface{})varmutexLockersync.MutexfunccancelTimer(timerIndexstring){mutexLocker.Lock()defermutexLocker.Unlock()timerCancelMap[timerIndex]=make(chaninterface{})timerCancelMap[timerIndex]现在这个

go - 是否可以捕获此 nil 指针错误

我有一个编译器无法发现的“nilpointer”错误,但我想看看是否有办法通过静态分析找到它。所以bug是这样的:packagemainimport("fmt")typeAstruct{namestring}funcnewGoodA()(*A,error){return&A{name:"Go",},nil}funcnewBadA()(*A,error){returnnil,fmt.Errorf("failedtocreateA")}func(a*A)greet()string{return"Hello"+a.name}funcmain(){valueA,err:=newBadA()if

Golang 将结构分配给另一个结构字段不起作用

我正在尝试使用Gorp获取所有体育类(class)。体育课有一个类(class)类型,所以我运行第二个查询来检索它们。我得到了所有的类类型,但由于某种原因最终的分配不起作用。packageentitiesimport("fmt""github.com/coopernurse/gorp""time")typeClassstruct{IdintClassTypeIdintClassTypeClassTypeVideoPathstringVideoSizeintDurationfloat64CreatedAttime.TimeVisibleAttime.TimeNoLongerVisible

go - 通过来自 channel 值的指针分配给局部变量

代码在这里:http://play.golang.org/p/WjpgN_0AaP在第45、46和47行,有三种不同的方法可以从消息代理中提取值(value)。//varmbMessageBroker=*所有这三个都具有完全相同的结果。选择一种方式而不是另一种方式有什么意义?另外,我很困惑为什么星号看起来没有什么区别。 最佳答案 查看函数声明:func(c*MyGui)Receive(in我们可以看到会给你一个*MessageBroker类型的值,指向MessageBroker的指针结构。在指针值之前放置一个星号将取消引用它(参见G